package com.jzo2o.customer.controller.agency;


import com.jzo2o.customer.model.dto.request.InstitutionResetPasswordReqDTO;
import com.jzo2o.customer.model.dto.response.ServeProviderInfoResDTO;
import com.jzo2o.customer.service.IServeProviderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * <p>
 * 服务人员/机构表 前端控制器
 * </p>
 *
 * @author itcast
 * @since 2023-07-17
 */
@Validated
@RestController("agencyServeProviderController")
@RequestMapping("/agency/serve-provider")
@Api(tags = "机构端 - 服务人员或机构相关接口")
public class ServeProviderController {
    @Resource
    private IServeProviderService serveProviderService;



    @GetMapping("/currentUserInfo")
    @ApiOperation("获取当前用户信息")
    public ServeProviderInfoResDTO currentUserInfo() {
        return serveProviderService.currentUserInfo();
    }

    @PostMapping("/institution/resetPassword")
    @ApiOperation("机构登录密码重置接口")
    public void resetPassword(@RequestBody InstitutionResetPasswordReqDTO institutionResetPasswordReqDTO) {
         serveProviderService.resetPassword(institutionResetPasswordReqDTO);
    }



//    这个加密使用的是 Spring Security 的 PasswordEncoder，具体来说很可能是 BCrypt 加密算法。
//    加密类型分析
//            java
//
//serveProvider.setPassword(passwordEncoder.encode(institutionResetPasswordReqDTO.getPassword()));
//
//1. 加密方式：BCrypt（最可能）
//
//    BCrypt 特点：
//
//    每次加密结果都不同（即使相同密码）
//
//    自动包含 salt（盐值）
//
//    结果格式：$2a$10$... 或 $2b$10$...
//
//    安全性高，抗彩虹表攻击

}
